# 06. 轮转数组.py
'''
- 进阶：
- 尽可能想出更多的解决方案，至少有 三种 不同的方法可以解决这个问题。
- 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗？
'''

from typing import List

class Solution_1:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        while k > 0:
             temp = nums.pop()
             nums.insert(0, temp)
             k -= 1

# O(n)
class Solution_2:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        length = len(nums)
        new_nums = list(nums)
        for i in range(length):
            new_index = (i+k) % length
            nums[new_index] = new_nums[i]